<h1 id="od">od</h1>
<p>输出文件的八进制、十六进制等格式编码的字节</p>
<h2 id="补充说明">补充说明</h2>
<p><strong>od命令</strong> 用于输出文件的八进制、十六进制或其它格式编码的字节，通常用于显示或查看文件中不能直接显示在终端的字符。</p>
<p>常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如，程序可能输出大量的数据记录，每个数据是一个单精度浮点数。这些数据记录存放在一个文件中，如果想查看下这个数据，这时候od命令就派上用场了。在我看来，od命令主要用来格式化输出文件数据，即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码，od命令都能按照需求输出它们的值。</p>
<h3 id="语法">语法</h3>
<pre><code class="language-bash">od(选项)(参数)</code></pre>
<h3 id="选项">选项</h3>
<pre><code class="language-bash">-a：此参数的效果和同时指定“-ta”参数相同；
-A：&lt;字码基数&gt;：选择以何种基数计算字码；
-b：此参数的效果和同时指定“-toC”参数相同；
-c：此参数的效果和同时指定“-tC”参数相同；
-d：此参数的效果和同时指定“-tu2”参数相同；
-f：此参数的效果和同时指定“-tfF”参数相同；
-h：此参数的效果和同时指定“-tx2”参数相同；
-i：此参数的效果和同时指定“-td2”参数相同；
-j&lt;字符数目&gt;或--skip-bytes=&lt;字符数目&gt;：略过设置的字符数目；
-l：此参数的效果和同时指定“-td4”参数相同；
-N&lt;字符数目&gt;或--read-bytes=&lt;字符数目&gt;：到设置的字符树目为止；
-o：此参数的效果和同时指定“-to2”参数相同；
-s&lt;字符串字符数&gt;或--strings=&lt;字符串字符数&gt;：只显示符合指定的字符数目的字符串；
-t&lt;输出格式&gt;或--format=&lt;输出格式&gt;：设置输出格式；
-v或--output-duplicates：输出时不省略重复的数据；
-w&lt;每列字符数&gt;或--width=&lt;每列字符数&gt;：设置每列的最大字符数；
-x：此参数的效果和同时指定“-h”参数相同；
--help：在线帮助；
--version：显示版本信息。</code></pre>
<h3 id="参数">参数</h3>
<p>文件：指定要显示的文件。</p>
<h3 id="实例">实例</h3>
<pre><code class="language-bash">[linuxde@localhost ~]$ echo abcdef g &gt; tmp
[linuxde@localhost ~]$ cat tmp
abcdef g</code></pre>
<p>说明：先准备一个tmp文件</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -b tmp
0000000 141 142 143 144 145 146 040 147 012
0000011</code></pre>
<p>说明：使用单字节八进制解释进行输出，注意左侧的默认地址格式为八字节</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -c tmp
0000000   a   b   c   d   e   f       g  \n
0000011</code></pre>
<p>说明：使用ASCII码进行输出，注意其中包括转义字符</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -t d1 tmp
0000000   97   98   99  100  101  102   32  103   10
0000011</code></pre>
<p>说明：使用单字节十进制进行解释</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -A d -c tmp
0000000   a   b   c   d   e   f       g  \n
0000009</code></pre>
<p>说明：设置地址格式为十进制。</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -A x -c tmp
000000   a   b   c   d   e   f       g  \n
000009</code></pre>
<p>说明：设置地址格式为十六进制</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -j 2 -c tmp
0000002   c   d   e   f       g  \n
0000011</code></pre>
<p>说明：跳过开始的两个字节</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -N 2 -j 2 -c tmp
0000002   c   d
0000004</code></pre>
<p>说明：跳过开始的两个字节，并且仅输出两个字节</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -w1 -c tmp
0000000   a
0000001   b
0000002   c
0000003   d
0000004   e
0000005   f
0000006   
0000007   g
0000010  \n
0000011</code></pre>
<p>说明：每行仅输出1个字节</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -w2 -c tmp
0000000   a   b
0000002   c   d
0000004   e   f
0000006       g
0000010  \n
0000011</code></pre>
<p>说明：每行输出两个字节</p>
<pre><code class="language-bash">[linuxde@localhost ~]$ od -w3 -b tmp
0000000 141 142 143
0000003 144 145 146
0000006 040 147 012
0000011</code></pre>
<p>说明：每行输出3个字节，并使用八进制单字节进行解释</p>
<!-- Linux命令行搜索引擎：https://jaywcjlove.github.io/linux-command/ -->
